草庐IT

Android AsyncTask 内存泄漏

全部标签

java - 以低内存消耗在 Java 中调整图像大小

ImageMagick的“转换”命令行工具允许您在执行操作时指定内存使用限制。我想找到一个提供相同选项的Java图像大小调整库。我的应用程序有时会得到非常大的JPEG,需要将它们缩减到合理的大小。例如,一个11600x5152的图像将消耗大约227MB的内存,只是解压缩它;调整大小的过程最终会使用比这更多的东西。在Java中,有没有一种方法可以将非常大的图像调整到合理的大小,而无需在内存中解压缩整个图像? 最佳答案 我认为这个主题已经在某种程度上进行了讨论:Whatisthebestjavaimageprocessinglibrar

Java - x32 和 x64 之间的奇数内存消耗

我一直在分析我的应用程序的x64版本,因为内存使用率高得离谱,所有这些似乎都来自JavaFXMediaPlayer,我正确地释放了监听器和事件处理程序。这是一个鲜明的对比。开始时的x32版本现在开始时是x64版本x32版本保持在256mb以下,而x64将超过演出;这是两人都在播放他们的播放列表的时候。所有的代码都是一样的。JDK:jdk1.8.0_20JRE:jre1.8.0_20两者的VM参数-XX:MinHeapFreeRatio=40-XX:MaxHeapFreeRatio=70-Xms3670k-Xmx256m-Dsun.java2d.noddraw=true-XX:+UseP

java - 是否可以按池检查堆内存使用情况?

我一直致力于优化一个有很多内存泄漏问题的程序。泄漏现在已经消失,但主要GC的偶尔运行仍然对PSoldgen产生了很大的影响。我知道我可以通过运行时检查基本的整体内存信息,但是是否可以从程序中检查PSeden、PSsurvivor和PSold中的使用情况? 最佳答案 这个article可以帮助你您可以编写自定义代码来分析内存,输出将采用以下形式collectiontime:82037collectioncount:116PSSurvivorSpace:init=1703936(1664K)used=65536(64K)committe

java - 尽管 RAM 显示 6 GB 可用空间,但 Java 运行时环境的内存不足无法继续

在运行java应用程序时,我得到以下内存转储。安装java8后(之前java7应用程序可以运行)我开始收到以下错误。我使用的是16GB内存,当我在任务管理器中检查时(在应用程序启动时)大约有6GB内存可用。有人可以帮忙解决问题吗?##ThereisinsufficientmemoryfortheJavaRuntimeEnvironmenttocontinue.#Nativememoryallocation(malloc)failedtoallocate472736bytesforChunk::new#Possiblereasons:#ThesystemisoutofphysicalRA

java - 在 log4j 的内存 'list appender' 中

log4j是否有一个仅存储日志记录事件列表的附加程序(用于单元测试,以验证没有写入错误日志)? 最佳答案 有一个MemoryAppender,但它不是标准log4j库的一部分。您可以轻松编写自己的代码,但如果您仅将它们用于单元测试,我可能会模拟Logger并断言没有调用它。覆盖目标类中的getLogger()方法或直接在类型上设置模拟Logger。使用Jmock(内存中的例子,如有错误请见谅):publicvoidtestDoFoo(){Mockerymockery=newMockery();LoggermockLogger=moc

java - 是否应该将 Disruptor (LMAX) 与内存和 CQRS 中的大模型一起使用?

出于性能原因,我们的系统结构化模型(大约30个具有多种关系的不同实体)完全保存在内存(大约10Gb)中。在这个模型上我们必须做3种操作:更新一个或几个实体查询特定数据(这通常需要读取数千个实体)获取统计数据(使用了多少内存,有多少种查询等)目前该体系结构是一个相当标准的体系结构,具有使用共享模型的servlet线程池。在模型内部有很多并发集合,但仍然有很多等待,因为一些实体“更热”并且大多数线程想要读/写它们。另请注意,通常查询比写入消耗更多的CPU和时间。我正在研究切换到Disruptor架构的可能性,将模型保持在单个线程中,将所有可能的东西(有效性检查、审计等)从模型中转移到单独的

java - volatile 关键字和内存一致性错误

在oracleJava文档中locatedhere,下面说:Atomicactionscannotbeinterleaved,sotheycanbeusedwithoutfearofthreadinterference.However,thisdoesnoteliminateallneedtosynchronizeatomicactions,becausememoryconsistencyerrorsarestillpossible.Usingvolatilevariablesreducestheriskofmemoryconsistencyerrors,becauseanywrite

java - VisualVM:理想的堆内存使用图

我正在使用VisualVM监控我的Java应用程序(用JDK1.7编写)。下图显示了此应用程序运行期间的堆内存使用情况。查看此图,您会发现其中有很多尖峰。这些尖峰表明应用程序创建了对象。一旦应用程序处理完它们,它就会使用gc(在这种情况下隐式调用)销毁它们。此外,这是应用程序仍在运行时内存分析器的屏幕截图对我来说,图形的上下性质表明java对象的有效使用。这个推断对吗?堆使用图的理想性质是什么?是否有任何其他方法可以改善我的应用程序的堆内存使用情况? 最佳答案 Tometheupanddownnatureofthegraphindi

内存中的Java原始数组布局

以下是我提出问题的两个示例(假设您在此处有JOL):Layouterlayout32Bits=newHotSpotLayouter(newX86_32_DataModel());Layouterlayout64BitsComp=newHotSpotLayouter(newX86_64_COOPS_DataModel());还有一个使用这个的例子:int[]ints=newint[10];System.out.println(ClassLayout.parseInstance(ints,layout32Bits).toPrintable());System.out.println(Cla

java - 如何获取Java堆的内存地址?

如何确定当前进程中运行的JVM的Java堆在内存中的地址?也就是说,使用Java、C或其他调用获取一个void*指针或等效于JVM为堆分配的连续内存区域?Matlab在其进程中嵌入了一个JVM。JVM分配的内存不可用于Matlab数组,其中,堆很重要,因为它占用了一大块连续的内存并且从不收缩,而Matlab的数组也需要连续的内存。如果在扩展期间重新分配堆,可能会导致碎片。我想检测我的进程来检查Java堆和Matlab的内存View之间的交互,并找出它何时因调整大小而移动,最好是在进程内。这需要堆的地址。从java.lang.Runtime很容易找到堆大小,但不是它在内存中的地址。如何做